/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import log.ExpertoLog;
import org.xml.sax.SAXException;

/**
 *
 * @author Leandro
 */
public class ExpertoPrincipal extends Thread{

    private String usr;
    private String pass;
    private int puerto;
    private ExpertoMail exp;
    private long fverif;
    private String server;
    private ExpertoProcesamientoMensajes procesadorMsjs;

    

    public String getServer() {
        return server;
    }

    public void setServer(String server) {
        this.server = server;
    }

    

    public ExpertoMail getExp() {
        return exp;
    }

    public void setExp(ExpertoMail exp) {
        this.exp = exp;
    }

    public long getFverif() {
        return fverif;
    }

    public void setFverif(long fverif) {
        this.fverif = fverif;
    }

    public ExpertoProcesamientoMensajes getProcesadorMsjs() {
        return procesadorMsjs;
    }

    public void setProcesadorMsjs(ExpertoProcesamientoMensajes procesadorMsjs) {
        this.procesadorMsjs = procesadorMsjs;
    }

   

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public int getPuerto() {
        return puerto;
    }

    public void setPuerto(int puerto) {
        this.puerto = puerto;
    }

    public String getUsr() {
        return usr;
    }

    public void setUsr(String usr) {
        this.usr = usr;
    }

    @Override
    public void run(){
        procesadorMsjs=new ExpertoProcesamientoMensajes();
        List<DtoMensaje> msjs;
        ExpertoXml Exml = null;
        try {
            Exml = new ExpertoXml();
            Exml.inicializardocumento("lecturas.xml");

            
        } catch (SAXException ex) {
            Logger.getLogger(ExpertoPrincipal.class.getName()).log(Level.SEVERE, null, ex);
            SuscriptorLog.getInst().notificar("#Error tratando de crear el experto XML");
            ExpertoLog.logger.error("#Error tratando de crear el experto XML");
        }
        while(true){
            List<Mensaje> mensajes=exp.getMessages(server, usr, pass);
            msjs=procesadorMsjs.processMessages(mensajes);
            
            //Procesar las variables
            for (DtoMensaje m : msjs) {

                SuscriptorLog.getInst().notificar("#Mensaje de " + m.getEquipo());
                ExpertoLog.logger.info("#Mensaje de " + m.getEquipo());
                for (DtoVariables v : m.getVars()) {
                    SuscriptorLog.getInst().notificar(v.getNombreVar() + " = " + v.getValor());
                    ExpertoLog.logger.info(v.getNombreVar() + " = " + v.getValor());
                }
                
                    //Escritura del archivo XML
//                    ExpertoXml Exml = new ExpertoXml();
                    if(Exml!=null){
                    Exml.escribirMensajes(msjs);
                    }
                    
                    
               
                SuscriptorLog.getInst().notificar("---------------------------------");
            }
            try {
                sleep(this.fverif);
            } catch (InterruptedException ex) {
                Logger.getLogger(ExpertoPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                SuscriptorLog.getInst().notificar("#Problema al tratar de dormirme...");
            }
        }
    }


    



}
